【Excel VBA】使用字典快速提取不重复记录 |
您所在的位置:网站首页 › vba 提取不重复数据 › 【Excel VBA】使用字典快速提取不重复记录 |
'数据源装入数组arr ReDim brr(1 To UBound(arr), 1 To 1) '声明一个数组brr放结果。 For i = 2 To UBound(arr) '标题行不要,从第2行开始遍历 s = arr(i, 1) '强制将数据转换成字符串类型,原因见小贴士 If Not d.exists(s) Then d(s) = "" '如果字典中不存在s,则作为关键字装入字典 k = k + 1 '累加个数 brr(k, 1) = arr(i, 1) '装入结果数组 End If Next [c:c].ClearContents [c1] = "结果" With [c2].Resize(k, 1) .NumberFormat = "@" '设置文本格式,防止某些文本数值变形 .Value = brr End With MsgBox "一共为你提取了:" & k & "个不重复值。" Set d = Nothing '释放字典 End Sub 运算结果: 小贴士: 1,该段代码区分字母大小写,即A和a并不重复,如果需要不区分字母大小写,解除代码中下面语句的注释块。 d.CompareMode = vbTextCompare 2,代码中有一句s = arr(i, 1),意思是将数据类型转换为字符串变量s。之所以这么操作,是因为字典关键字认为数值和文本型数值是不相等的,举个例子,如下图,数值123和文本123,字典认为并不重复。 另外,即便数据区域的数值不存在文本型数值,也建议将之强制转换为字符串类型。 举个例子,在下面的链接中有一个示例文件,该文件的A列存在大量重复数值,但不论【删除重复项】还是【高级筛选】,均不能准确数据去重,如果不将数值类型转换为字符串,字典同样也不能准确去重,不信,你就测试看看呗~ https://pan.baidu.com/s/1Fj1BTdSZS0hkruvH6cPTbA 提取码: ujt8 握爪,致安,下期见~ 图文作者:看见星光返回搜狐,查看更多 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |